home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* Homo Sapiens - v.1.00 '************************************************************************** '$DEFINE DEBUG '$INCLUDE 'setupapi.inc' '$INCLUDE 'mscpydis.inc' ''System '$INCLUDE 'msdetect.inc' ''Detects Avalilable Disk Space DECLARE FUNCTION mciSendString LIB "mmsystem.dll" (szCommand AS STRING, szReturn AS STRING, wRetunL AS INTEGER, hVoid AS INTEGER ) AS LONG ''Dialog ID's CONST WELCOME = 100 CONST ASKQUIT = 200 CONST DESTPATH = 300 CONST EXITFAILURE = 400 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST APPHELP = 900 CONST BADPATH = 6400 CONST CHECK = 2500 ''CONST SMALLWIN = 2200 CONST SMALLWIN = 6300 CONST RESTART = 2600 CONST RESTARTII = 2700 CONST UPDATERUNTIME = 9000 CONST BADRUNTIME = 9100 CONST DISKSPACEDLG = 8050 ''Bitmap ID CONST LOGO = 1 CONST VFW11 = 2 GLOBAL DEST$ ''Default destination directory. GLOBAL INSTPATH$ ''Default destination directory. GLOBAL RET$ GLOBAL CUIDLL$ DECLARE SUB InstallHS DECLARE SUB ConfigHS DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION EnoughDiskSpace () AS INTEGER GLOBAL SizeReq& '' Total Disk Size required for installation '''''''''''''''''''''''''''''' ''VFW11 ''File Types GLOBAL WinDir$ GLOBAL WinSysDir$ GLOBAL WinSys32Dir$ GLOBAL WINDRIVE$ ''Windows Drive Letter. GLOBAL CHECKSTATES$ GLOBAL MinorVer% GLOBAL OnNT$ DECLARE SUB Install DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER DECLARE SUB Reboot LIB "iniupd.dll" DECLARE FUNCTION ExitWindowsExec LIB "User" (Exec$, Param$) AS INTEGER INIT: SetTitle "Homo Sapiens - Setup" CUIDLL$ = "mscuihsm.dll" ''Custom user interface dll - custom per EMME HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure WIN32ENABLED% = 0 MajorVer% = GetWindowsMajorVersion() MinorVer% = GetWindowsMinorVersion() IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software. Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND) END END IF SetBitmap CUIDLL$, LOGO szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "HS.INF" END IF ReadInfFile szInf$ WinDir$ = GetWindowsDir() WinSysDir$ = GetWindowsSysDir() RET$ = " " WINDRIVE$ = MID$(GetWindowsDir, 1, 1) DEST$ = GetIniKeyString( MakePath(WinDir$, "OPERAMM.INI"), "Homo Sapiens", "InstallationPath" ) IF DEST$ = "" THEN DEST$ = "C:\HOMO" END IF '$IFDEF DEBUG i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal WinDrive$ = MID$(GetWindowsDir, 1, 1) IF IsDriveValid(WinDrive$) = 0 THEN i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOTO QUIT END IF '$ENDIF ''DEBUG WELCOME: sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF GETPATH: SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$) DEST$ = GetSymbolValue("EditTextOut") IF sz$ = "CONTINUE" THEN IF IsDirWritable(DEST$) = 0 THEN GOSUB BADPATH GOTO GETPATHL1 END IF rr% = EnoughDiskSpace () IF rr% <> 0 THEN IF rr% = 3 THEN GOSUB ASKQUIT GOTO GETPATH END IF GOTO GETPATHL1 END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO GETPATHL1 ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO GETPATH END IF CreateDir DEST$, cmoNone OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0 InstallHS AVI = 0 e& = mciSendString ( "sysInfo all quantity", RET$, 30, 0 ) IF e& = 0 THEN NumDev% = VAL(RET$) FOR dev% = 1 to NumDev% e& = mciSendString ( "sysInfo all name "+STR$(dev%), RET$, 40, 0 ) IF RET$ = "AVIVideo" THEN AVI = 1 END IF NEXT END IF IF AVI <> 0 THEN UPDRUNTIME: sz$ = UIStartDlg(CUIDLL$, UPDATERUNTIME, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPop 1 GOTO ENDOFSETUP ELSEIF sz$ = "REACTIVATE" THEN GOTO UPDRUNTIME ELSE UIPop 1 END IF END IF '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '' Video For Windows 1.1 installation ''Prepare Copy list and check size ClearCopyList SrcDir$ = GetSymbolValue("STF_SRCDIR") DEST$ = WinDir$ WinSys32Dir$ = WinDir$ + "system32" ' Use Wowexec to determine version of NT. 3.1 did not stamp wowexec and wow returns 3.1 as version IF OnWindowsNT() THEN OnNT$ = "TRUE" WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe") IF WowVersion$ = "" THEN i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1. Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND) GOTO NOVIDEO END IF END IF Processor% = GetProcessorType() 'Prevents installation on 286 IF Processor% < 3 THEN i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND) GOTO NOVIDEO END IF '' Remove DCISVGA file AddSectionFilesToCopyList "remove", SrcDir$, WinSysDir$ '' Runtime files (on Windows disk) '' Do not install OLE or MPlayer if on next release of NT or Windows IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN 'These files not necessary on Windows NT AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$ AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$ END IF AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$ AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$ AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$ IF OnNT$ = "TRUE" THEN AddSectionFilesToCopyList "NT MSVideo", SrcDir$, WinSys32Dir$ ENDIF ''************************************************************************************************************************* ''************************************************************************************************************************* ''To add a DCI provider, please un-comment the AddSectionFilesToCopyList, ''and add a "DCI Provider" section with to the SETUP.INF file. '' '' AddSectionFilesToCopyList "DCI Provider", SrcDir$, WinSysDir$ ''************************************************************************************************************************* ''************************************************************************************************************************* '' Check windrive diskspace SizeReq& = GetCopyListCost ("","", "") IF SizeReq& <> 0 THEN GOSUB SMALLWIN GOTO NOVIDEO END IF Install ConfigHS CloseLogFile '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically '' else, it gives the user the choice RESTRT% = RestartListEmpty () Exe$ = DEST$ + "\_msrstrt.exe" Batch$ = DEST$ + "\_mssetup.bat" empty$ = "" RESTART: IF RESTRT% = 0 THEN sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO RESTART ENDIF I% = ExitExecRestart () RemoveFile Exe$, cmoForce RemoveFile Batch$, cmoForce END ELSE sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "") IF sz$ = "CONTINUE" THEN I% = ExitWindowsExec (Exe$, empty$) IF I% = 0 THEN GOTO RESTART ELSE END ENDIF ELSEIF sz$ = "EXIT" THEN UIPopAll END ELSEIF sz$ = "REACTIVATE" THEN GOTO RESTART ELSE UIPop 1 END IF END IF ENDOFSETUP: ConfigHS CloseLogFile QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = EXITSUCCESS ELSEIF ERR = STFQUIT THEN dlg% = EXITQUIT ELSE dlg% = EXITFAILURE END IF QUITL1: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 END NOVIDEO: sz$ = UIStartDlg(CUIDLL$, BADRUNTIME, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO NOVIDEO END IF UIPop 1 GOTO ENDOFSETUP ERRQUIT: i% = DoMsgBox("Unrecoverable error during setup", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) END BADPATH: sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADPATH END IF UIPop 1 RETURN ASKQUIT: sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN SMALLWIN: sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO SMALLWIN END IF UIPop 1 RETURN '** '** Purpose: '** Builds the copy list and performs all installation operations. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB InstallHS STATIC SrcDir$ = GetSymbolValue("STF_SRCDIR") WriteToLogFile "" WriteToLogFile " User chose as destination directory: '" + DEST$ + "'" WriteToLogFile "" WriteToLogFile "May have had to create the directory: " + DEST$ WriteToLogFile "" AddSectionFilesToCopyList "Runtime", SrcDir$, DEST$ AddSectionFilesToCopyList "HOMO", SrcDir$, DEST$ CopyFilesInCopyList ini$ = MakePath(WinDir$, "OPERAMM.INI") WriteToLogFile "" WriteToLogFile "Update INI file" WriteToLogFile "" CD$ = MID$(SrcDir$,1,2) IF CD$ = "\\" THEN i% = 3 Count% = 0 WHILE i% <= LEN(SrcDir$) AND Count% < 2 IF MID$(SrcDir$,i%,1) = "\" THEN Count% = Count% + 1 END IF i% = i% +1 WEND IF Count% = 2 THEN i% = i%-1 END IF CD$ = MID$(SrcDir$,1,i%-1) END IF Desktop$ = "Homo Sapiens" Audio$ = CD$ + "\mediaeng\" CreateIniKeyValue ini$, Desktop$, "CDRomDrive", CD$, cmoOverwrite CreateIniKeyValue ini$, Desktop$, "PathAudio", Audio$, cmoOverwrite CreateIniKeyValue ini$, Desktop$, "InstallationPath", DEST$, cmoOverwrite CreateIniKeyValue ini$, Desktop$, "SuoniAmbiente", "SI", cmoOverwrite CreateIniKeyValue ini$, Desktop$, "ProgName", "HOMO.EXE", cmoOverwrite CreateIniKeyValue ini$, Desktop$, "Sigla", "UNA", cmoOverwrite INSTPATH$ = DEST$ END SUB SUB ConfigHS STATIC CreateProgmanGroup "Multimedia from E.M.M.E.", "", cmoNone CreateProgmanItem "Multimedia from E.M.M.E.", "Homo Sapiens", MakePath(INSTPATH$,"Operamm.exe Homo Sapiens"), MakePath(INSTPATH$,"HOMOBMP.DLL")+"", cmoOverwrite '** CreateProgmanItem "Multimedia from E.M.M.E.", "Homo Sapiens", MakePath(INSTPATH$,"Operamm.exe Homo Sapiens"), MakePath(INSTPATH$,"HSINI.exe")+",,,,"+INSTPATH$, cmoOverwrite END SUB '** '** Purpose: '** Performs all installation operations. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB Install STATIC SetRestartDir WinDir$ CopyFilesInCopyList ''Updating WIN.INI and SYSTEM.INI ''Only update SYSTEM.INI on NT or next version of Windows for other codecs IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN IF VflatdPresent() = 0 THEN CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite END IF END IF CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite ''************************************************************************************************************************* ''************************************************************************************************************************* ''To add a DCI provider, please un-comment the UDH line, and un-comment and replace the <provider> with your own file name '' '' CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "DCI", "<provider>", cmoOverwrite '' CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "vids.draw", "udh.dll", cmoOverwrite ''************************************************************************************************************************* ''************************************************************************************************************************* ''Do not register components not installed with Video for Windows on NT or next version of Windows. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg")) Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg")) Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg")) '' Mplayer CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite END IF ''NT and next version of Windows installation stop here. Run ("profdisp.exe") END SUB FUNCTION EnoughDiskSpace() STATIC AS INTEGER EnoughDiskSpace = 0 SrcDir$ = GetSymbolValue("STF_SRCDIR") SetSymbolValue "Extra", "" SetSymbolValue "Cost", "" DESTDRIVE$ = MID$(DEST$,1,1) win% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1 inst% = ASC(ucase$(DESTDRIVE$)) - ASC("A") + 1 FOR i% = 1 TO (win%-1) rr% = FAddListItem ("Extra", "0") NEXT i% rr% = FAddListItem ("Extra", "10000") ClearCopyList AddSectionFilesToCopyList "Runtime", SrcDir$, DEST$ AddSectionFilesToCopyList "HOMO", SrcDir$, DEST$ StillNeed& = GetCopyListCost("Extra", "Cost", "") IF StillNeed& > 0 THEN cost& = VAL(GetListItem("Cost", win%)) free& = GetFreeSpaceForDrive(WINDRIVE$) EnoughDiskSpace = 1 IF cost& > free& THEN FullName$ = "Windows drive:" FullDrive$ = WINDRIVE$ + ":" GOSUB DISKSPACE END IF 'Se scelgo Esci, viene resettato questo long, quindi non continuo IF StillNeed& > 0 THEN cost& = VAL(GetListItem("Cost", inst%)) free& = GetFreeSpaceForDrive(DESTDRIVE$) IF cost& > free& THEN FullName$ = "Installation drive:" FullDrive$ = DESTDRIVE$ + ":" GOSUB DISKSPACE END IF END IF END IF GOTO FINESUB DISKSPACE: SetSymbolValue "ConfirmTextIn", "" rr% = FAddListItem ("ConfirmTextIn", FullName$) rr% = FAddListItem ("ConfirmTextIn", FullDrive$) rr% = FAddListItem ("ConfirmTextIn", "Required space:") rr% = FAddListItem ("ConfirmTextIn", STR$(cost&/1024)+" KB") rr% = FAddListItem ("ConfirmTextIn", "Available space:") rr% = FAddListItem ("ConfirmTextIn", STR$(free&/1024)+" KB") DISKSPACE1: sz$ = UIStartDlg(CUIDLL$, DISKSPACEDLG, "FConfirmDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO DISKSPACE1 ELSE UIPop 1 EnoughDiskSpace = 3 StillNeed& = 0 END IF RETURN FINESUB: ClearCopyList END FUNCTION '** '** Purpose: '** Appends a file name to the end of a directory path, '** inserting a backslash character as needed. '** Arguments: '** szDir$ - full directory path (with optional ending "\") '** szFile$ - filename to append to directory '** Returns: '** Resulting fully qualified path name. '************************************************************************* FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING IF szDir$ = "" THEN MakePath = szFile$ ELSEIF szFile$ = "" THEN MakePath = szDir$ ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN MakePath = szDir$ + szFile$ ELSE MakePath = szDir$ + "\" + szFile$ END IF END FUNCTION